// eslint-disable-next-line no-undef
export default Behavior({
  created() {
    this.checkInitShare()
  },
  methods: {
    checkInitShare() {
      wx.xrScene = undefined

      if (!this.scene) {
        setTimeout(() => {
          this.checkInitShare()
        }, 100)
        return
      }

      if (this.scene.ar) {
        if (this.scene.ar.ready) {
          this.initARTrackerState(this.scene)
        }
        else {
          this.scene.event.add('ar-ready', () => this.initARTrackerState(this.scene))
        }
      }

      if (!this.scene.share.supported) {
        console.warn('Not support xr-frame share system now!')
        return
      }

      this.sharing = false
      wx.xrScene = this.scene
    },
    initARTrackerState(scene) {
      const xrFrameSystem = wx.getXrFrameSystem()
      scene.dfs(() => {}, undefined, true, (el) => {
        const comp = el.getComponent(xrFrameSystem.ARTracker)
        if (comp) {
          if (typeof comp.state === 'number') {
            this.triggerEvent('arTrackerState', { state: comp.state, error: comp.errorMessage })
            el.event.add('ar-tracker-state', (tracker) => {
              this.triggerEvent('arTrackerState', { state: tracker.state, error: tracker.errorMessage })
            })
          }
          return true
        }
      })
    },
  },
})
